package org.jeecg.modules.dock.service;

import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.system.vo.SysDepartModel;
import org.jeecg.modules.dock.entity.mes.request.*;
import org.jeecg.modules.dock.entity.mes.response.MesBaseResponseVO;

/**
 * mes对接数据服务
 *
 * @author zhoutong
 */
public interface MesDockingService {

    /**
     * MES-WMS发送刻痕入库请求
     *
     * @param scoringStorageRequestVO
     */
    MesBaseResponseVO scoringStorage(ScoringStorageOrScratchRequestVO scoringStorageRequestVO);

    /**
     * MES-WMS发送纵剪入库请求
     *
     * @param vo
     */
    MesBaseResponseVO longitudinalShearStorage(LongitudinalShearStorageRequestVO vo);

    /**
     * MES-WMS发送纵剪叫纸筒
     *
     * @param vo
     */
    MesBaseResponseVO verticalCuttingIsCalledPaperTube(VerticalCuttingIsCalledPaperTubeRequestVO vo);

    /**
     * MES-WMS发送纵横剪退纸筒
     *
     * @param vo
     */
    MesBaseResponseVO verticalAndHorizontalCutting(VerticalAndHorizontalCuttingRequestVO vo);

    /**
     * MES-WMS发送叠片辅材叫料请求（200#、300#、400#、600#）
     *
     * @param vo
     */
    MesBaseResponseVO laminatedAuxiliaryMaterialOrdering(LaminatedAuxiliaryMaterialOrderingRequestVO vo);

    /**
     * MES-WMS发送叠片辅材退料请求（200#、300#、400#、600#）
     *
     * @param vo
     */
    MesBaseResponseVO laminatedAuxiliaryMaterialReturn(LaminatedAuxiliaryMaterialReturnRequestVO vo);

    /**
     * MES-WMS发送包装线叫料请求
     *
     * @param vo
     */
    MesBaseResponseVO packagingLineMaterialOrdering(PackagingLineMaterialOrderingRequestVO vo);

    /**
     * MES-WMS发送包装线退料请求
     *
     * @param vo
     */
    MesBaseResponseVO packagingLineReturn(PackagingLineReturnRequestVO vo);

    /**
     * MES-WMS发送包装入库请求（定尺）
     *
     * @param vo
     */
    MesBaseResponseVO finishedProductWarehousing(FinishedProductWarehousingScaleRequestVO vo);

    /**
     * MES-WMS发送成品入库请求（铁心）
     *
     * @param vo
     */
    MesBaseResponseVO finishedProductWarehousingIron(FinishedProductWarehousingIronRequestVO vo);

    /**
     * 同步【铁心】质检结果
     *
     * @param vo
     */
    MesBaseResponseVO syncExamIronResult(FinishedProductWarehousingIronRequestVO vo);

    /**
     * MES-WMS发送刻痕叫料请求
     *
     * @param vo
     */
    MesBaseResponseVO scoringScratch(ScoringReturnOrScratchRequestVO vo);

    /**
     * MES-WMS发送刻痕退料请求
     *
     * @param vo
     */
    MesBaseResponseVO scoringReturn(ScoringReturnOrScratchRequestVO vo);

    /**
     * MES-WMS发送横剪叫料请求
     *
     * @param param
     * @return MesBaseResponseVO
     * @author hansen
     * @since 2023/10/5 8:37
     */
    MesBaseResponseVO crossShearCallMaterial(CrossShearCallMaterialRequestVO param);

    /**
     * MES-WMS发送横剪退料请求
     *
     * @param param
     * @return MesBaseResponseVO
     * @author hansen
     * @since 2023/10/5 9:46
     */
    MesBaseResponseVO crossShearingMaterialWithdrawal(CrossShearingMaterialWithdrawalRequestVO param);

    /**
     * MES-WMS发送横剪叫料板请求
     *
     * @param param
     * @return MesBaseResponseVO
     * @author hansen
     * @since 2023/10/5 9:47
     */
    MesBaseResponseVO transverseShearCallMaterialPlate(TransverseShearCallMaterialPlateRequestVO param);

    /**
     * MES-WMS发送横剪叫废料箱请求
     *
     * @param param
     * @return MesBaseResponseVO
     * @author hansen
     * @since 2023/10/5 9:47
     */
    MesBaseResponseVO transverseShearCalledScrapBox(TransverseShearCalledScrapBoxRequestVO param);

    /**
     * MES-WMS发送横剪退废料箱请求
     *
     * @param param
     * @return MesBaseResponseVO
     * @author hansen
     * @since 2023/10/5 9:48
     */
    MesBaseResponseVO crossCutTheScrapBin(CrossCutTheScrapBinRequestVO param);

    /**
     * MES-WMS发送横剪入库请求
     *
     * @param param
     * @return MesBaseResponseVO
     * @author hansen
     * @since 2023/10/5 9:49
     */
    MesBaseResponseVO scissorEntry(ScissorEntryRequestVO param);

    /**
     * MES-WMS发送叠片叫料请求
     *
     * @param param
     * @return MesBaseResponseVO
     * @author hansen
     * @since 2023/10/5 9:49
     */
    MesBaseResponseVO laminationCall(LaminationCallRequestVO param);

    /**
     * MES-WMS发送叠片退料请求（柱料）
     *
     * @param param
     * @return MesBaseResponseVO
     * @author hansen
     * @since 2023/10/5 9:50
     */
    MesBaseResponseVO laminationReturn(LaminationReturnRequestVO param);

    /**
     * MES-MES发送叠片叫料完成返回柱料明细
     *
     * @param param
     * @return MesBaseResponseVO
     * @author hansen
     * @since 2023/10/5 9:51
     */
    MesBaseResponseVO laminationCallMaterialCompletionReturn(LaminationCallMaterialCompletionReturnColumnMaterialDetails param);

    /**
     * MES-WMS发送叠片退料板请求
     *
     * @param param
     * @return MesBaseResponseVO
     * @author hansen
     * @since 2023/10/5 10:23
     */
    MesBaseResponseVO laminatedRefeedingPlate(LaminatedRefeedingPlateRequestVO param);

    /**
     * MES-WMS发送纵剪叫料请求
     *
     * @param param
     * @return MesBaseResponseVO
     * @author hansen
     * @since 2023/10/5 10:24
     */
    MesBaseResponseVO slittingIsCalledMaterial(SlittingIsCalledMaterialRequestVO param);

    /**
     * MES-WMS发送纵剪退料请求
     *
     * @param param
     * @return MesBaseResponseVO
     * @author hansen
     * @since 2023/10/5 10:24
     */
    MesBaseResponseVO theMaterialIsWithdrawnByLongitudinalShearing(TheMaterialIsWithdrawnByLongitudinalShearingRequestVO param);

    /**
     * 通过部门code获取部门全部信息
     *
     * @param user
     * @return org.jeecg.common.system.vo.SysDepartModel
     * @author hansen
     * @since 2023/10/10 13:54
     */
    SysDepartModel getSysDepartModel(LoginUser user);

    /**
     * 纵剪退钢筒
     *
     * @param vo
     * @return
     * @author DongPeng
     * @date 2023/10/12 9:17
     */
    MesBaseResponseVO returnSteelBarrel(ReturnSteelBarrelRequestVO vo);

    /**
     * 任务状态更新
     *
     * @param vo
     */
    MesBaseResponseVO updateStatus(MesBaseRequestVO vo);

    /**
     * 刻痕入库更新状态
     *
     * @param vo
     * @return
     */
    MesBaseResponseVO updateScoringStorage(UpdateScoringStorageRequestVO vo);

    /**
     * MES-WMS发送纵剪叫托盘
     *
     * @param param
     * @return MesBaseResponseVO
     * @author hansen
     * @since 2023/10/25 9:19
     */
    MesBaseResponseVO theSlittingIsCalledATray(TheSlittingIsCalledATrayRequestVO param);

    /**
     * 纵剪消耗纸筒
     *
     * @param param
     * @return org.jeecg.modules.dock.entity.mes.response.MesBaseResponseVO
     * @author hansen
     * @since 2023/11/9 14:06
     */
    MesBaseResponseVO zjConsumePaper(ZJUsePaperRequestVO param);

    /**
     * 生产入库超大卷
     *
     * @param param
     * @return org.jeecg.modules.dock.entity.mes.response.MesBaseResponseVO
     * @author hansen
     * @since 2023/11/9 14:05
     */
    MesBaseResponseVO scStockSuper(SCStockSuperRequestVO param);

    /**
     * MES-WMS发送条料调拨出库提醒
     *
     * @author hansen
     * @since 2024/1/23 14:32
     * @param param
     * @return org.jeecg.modules.dock.entity.mes.response.MesBaseResponseVO
     */
    MesBaseResponseVO stripMaterialIsTransferredOutOfStorage(StripMaterialIsTransferredOutOfStorageRequestVO param);
}
